#install.packages("ggtext")
library(dplyr)
library(ggtext)
library(tmap)
library(rgdal)
library(sf)
library(plotly)
library(ggplot2)
library(viridis)
library(dplyr)
![]() |
Final Exam2 - Visualizing My Neighborhood
1 광주 지역정보 시각화
1.1 패키지
1.2 데이터 불러오기
<- readOGR("C:/Users/seong taek/Desktop/3-1 DataVisualize/data_visualize/LSMD_ADM_SECT_UMD_29.shp",encoding = "euc-kr")
gwang_ju #> OGR data source with driver: ESRI Shapefile
#> Source: "C:\Users\seong taek\Desktop\3-1 DataVisualize\data_visualize\LSMD_ADM_SECT_UMD_29.shp", layer: "LSMD_ADM_SECT_UMD_29"
#> with 203 features
#> It has 5 fields
<- gwang_ju %>% st_as_sf()
gwang_ju %>% head()
gwang_ju #> Simple feature collection with 6 features and 5 fields
#> Geometry type: MULTIPOLYGON
#> Dimension: XY
#> Bounding box: xmin: 922908.9 ymin: 1685904 xmax: 937583.2 ymax: 1691397
#> Projected CRS: Korea 2000 / Unified CS
#> EMD_CD EMD_NM SGG_OID COL_ADM_SE GID geometry
#> 0 29200202 오선동 3233 29200 3247 MULTIPOLYGON (((934856 1689...
#> 1 29200178 동림동 3232 29200 3248 MULTIPOLYGON (((925403.5 16...
#> 2 29200177 양산동 3231 29200 3249 MULTIPOLYGON (((925032.9 16...
#> 3 29200176 덕림동 1605 29200 3250 MULTIPOLYGON (((925606 1686...
#> 4 29200175 동호동 1604 29200 3251 MULTIPOLYGON (((925167 1688...
#> 5 29200174 명도동 3228 29200 3252 MULTIPOLYGON (((925936.6 16...
<- read.csv('C:/Users/seong taek/Desktop/3-1 DataVisualize/data_visualize/소상공인시장진흥공단_상가(상권)정보_광주_202303.csv')
gwang_ju_data %>% head()
gwang_ju_data #> 상가업소번호 상호명 지점명
#> 1 MA0101202210A0085370 수헤어
#> 2 MA0101202210A0040614 몰카페
#> 3 MA0101202210A0081304 명품고로케NO.1
#> 4 MA0101202210A0051646 엄마손팥죽
#> 5 MA010120220805431082 여유드림24시무인셀프빨래방소태점
#> 6 MA010120220805431357 위고키친
#> 상권업종대분류코드 상권업종대분류명 상권업종중분류코드 상권업종중분류명
#> 1 S2 수리·개인 S207 이용·미용
#> 2 I2 음식 I212 비알코올
#> 3 I2 음식 I210 기타 간이
#> 4 I2 음식 I201 한식
#> 5 S2 수리·개인 S209 세탁
#> 6 I2 음식 I201 한식
#> 상권업종소분류코드 상권업종소분류명 표준산업분류코드
#> 1 S20701 미용실 S96112
#> 2 I21201 카페 I56221
#> 3 I21001 빵/도넛 I56191
#> 4 I20101 백반/한정식 I56194
#> 5 S20902 셀프 빨래방 S96912
#> 6 I20101 백반/한정식 I56111
#> 표준산업분류명 시도코드 시도명 시군구코드 시군구명 행정동코드
#> 1 두발 미용업 29 광주광역시 29170 북구 29170590
#> 2 커피 전문점 29 광주광역시 29200 광산구 29200620
#> 3 제과점업 29 광주광역시 29200 광산구 29200565
#> 4 김밥 및 기타 간이 음식점업 29 광주광역시 29155 남구 29155705
#> 5 가정용 세탁업 29 광주광역시 29110 동구 29110730
#> 6 한식 일반 음식점업 29 광주광역시 29170 북구 29170530
#> 행정동명 법정동코드 법정동명 지번코드 대지구분코드 대지구분명 지번본번지
#> 1 용봉동 2917010700 용봉동 2.917011e+18 1 대지 405
#> 2 비아동 2920011300 도천동 2.920011e+18 1 대지 380
#> 3 어룡동 2920010800 소촌동 2.920011e+18 1 대지 287
#> 4 진월동 2915510800 진월동 2.915511e+18 1 대지 369
#> 5 지원1동 2911011900 소태동 2.911012e+18 1 대지 617
#> 6 중흥3동 2917010100 중흥동 2.917010e+18 1 대지 271
#> 지번부번지 지번주소 도로명코드
#> 1 NA 광주광역시 북구 용봉동 405 291703162020
#> 2 2 광주광역시 광산구 도천동 380-2 292003163014
#> 3 5 광주광역시 광산구 소촌동 287-5 292004289285
#> 4 2 광주광역시 남구 진월동 369-2 291553161002
#> 5 3 광주광역시 동구 소태동 617-3 291103159017
#> 6 22 광주광역시 북구 중흥동 271-22 291704286364
#> 도로명 건물본번지 건물부번지 건물관리번호
#> 1 광주광역시 북구 반룡로 57 NA 2.917011e+24
#> 2 광주광역시 광산구 사암로 790 NA 2.920011e+24
#> 3 광주광역시 광산구 소촌로86번길 11 NA 2.920011e+24
#> 4 광주광역시 남구 금당로 47 NA 2.915511e+24
#> 5 광주광역시 동구 학소로 73 NA 2.911012e+24
#> 6 광주광역시 북구 서방로31번길 5 NA 2.917010e+24
#> 건물명 도로명주소 구우편번호
#> 1 용봉동유창하이리빙맨션 광주광역시 북구 반룡로 57 500843
#> 2 광주광역시 광산구 사암로 790 506300
#> 3 광주광역시 광산구 소촌로86번길 11 506802
#> 4 철물전기 광주광역시 남구 금당로 47 503842
#> 5 광주광역시 동구 학소로 73 501828
#> 6 광주광역시 북구 서방로31번길 5 500873
#> 신우편번호 동정보 층정보 호정보 경도 위도
#> 1 61182 NA 1 NA 126.9044 35.17869
#> 2 62244 NA NA 126.8187 35.21305
#> 3 62385 NA 1 NA 126.7942 35.15232
#> 4 61735 NA 1 NA 126.8957 35.12114
#> 5 61500 NA 1 NA 126.9341 35.12629
#> 6 61190 NA 1 NA 126.9165 35.17342
1.3 광주지역 ‘구’ 분류
%>% ggplot(aes(fill = COL_ADM_SE)) +
gwang_ju geom_sf() +
theme_minimal() +
labs(title = "광주") +
scale_fill_discrete(name = "구",
labels = c("동구","서구","남구","북구","광산구"))
1.4 광주지역 ‘동’ 분류
<- gwang_ju %>%
gwang_ju_dong ggplot(aes(fill=EMD_NM))+
geom_sf()+
geom_sf_text(mapping = aes(label = EMD_NM))+
labs(title = "광주")+
theme_minimal()+
scale_fill_discrete(name = "동")
%>% ggplotly() gwang_ju_dong
1.5 광주광역시 북구 문흥동
<- gwang_ju %>%
my_dong filter(EMD_NM == "문흥동") %>%
ggplot(aes(fill=EMD_NM)) +
geom_sf() +
geom_sf_text(mapping = aes(label = EMD_NM)) +
labs(title = "광주광역시 북구 문흥동") +
theme_minimal() +
scale_fill_discrete(name = "동")
%>% ggplotly() my_dong
1.6 전처리
- 각종 편의시설
library(RColorBrewer)
# 문흥동 데이터만 추출
<- gwang_ju_data %>%
gwang_ju_data_mydong filter(gwang_ju_data$법정동명 == "문흥동") %>%
st_as_sf(coords = c("경도", "위도"))
st_crs(gwang_ju_data_mydong) <- 4737
# 문흥동 지도
<- gwang_ju %>%
gwang_ju_mydong filter(gwang_ju$EMD_NM == "문흥동")
# 문흥동에 있는 상권업종소분류명 추출
<- unique(gwang_ju_data_mydong$상권업종소분류명)
existing_categories %>% head()
existing_categories #> [1] "편의점" "미용실" "독서실/스터디 카페"
#> [4] "부동산 중개/대리업" "곱창 전골/구이" "백반/한정식"
# viridis 색상 팔레트 사용 (146개의 색상)
<- magma(length(existing_categories))
colors
# 상권업종소분류명과 색상을 매칭하는 데이터프레임 생성
<- data.frame(상권업종소분류명 = existing_categories,
color_mapping = colors)
색상
%>% head()
color_mapping #> 상권업종소분류명 색상
#> 1 편의점 #000004FF
#> 2 미용실 #010106FF
#> 3 독서실/스터디 카페 #020109FF
#> 4 부동산 중개/대리업 #02020CFF
#> 5 곱창 전골/구이 #03030FFF
#> 6 백반/한정식 #040414FF
1.7 동네 편의시설 시각화
<- ggplot() +
my_dong2 geom_sf(data = gwang_ju_mydong, fill = 'grey90') +
geom_sf(data = gwang_ju_data_mydong, aes(color = 상권업종소분류명), size = 1.5) +
scale_color_manual(values = color_mapping$색상,
breaks = color_mapping$상권업종소분류명,
labels = color_mapping$상권업종소분류명,
drop = TRUE) +
theme_minimal() +
labs(title = "문흥동 내 편의시설")
%>% ggplotly() my_dong2
2 tmap 시각화
- OpenStreetMap
tmap_mode("view")
#> tmap mode set to interactive viewing
tmap_options(check.and.fix = TRUE)
tm_shape(gwang_ju_mydong["EMD_NM"])+
tm_polygons(col="white",alpha = 0.3)+
tm_shape(gwang_ju_data_mydong["상권업종소분류명"])+
tm_symbols(shape = 2, col = "royalblue", size = 0.8, alpha = 0.5)
#> Symbol shapes other than circles or icons are not supported in view mode.